import { IPSAppDEAction } from '../../app/dataentity/ipsapp-deaction';
import { IPSAppDEDataSet } from '../../app/dataentity/ipsapp-dedata-set';
import { IPSAppDEField } from '../../app/dataentity/ipsapp-defield';
import { IPSControlMDObject } from '../ipscontrol-mdobject';
import { IPSDETreeNode } from './ipsdetree-node';
import { IPSDEOPPriv } from '../../dataentity/priv/ipsdeoppriv';

/**
 *
 * 继承父接口类型值[DE]
 * @export
 * @interface IPSDETreeDataSetNode
 */
export interface IPSDETreeDataSetNode extends IPSDETreeNode, IPSControlMDObject {
  /**
   * 节点计数值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getChildCntPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点计数值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get childCntPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点计数值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getChildCntPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 节点样式表值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getClsPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点样式表值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get clsPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点样式表值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getClsPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 附加查询条件
   * @type {string}
   */
  customCond: string;

  /**
   * 过滤应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  getFilterPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 过滤应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  get filterPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 过滤应用实体结果集对象（必须存在）
   *
   * @type {IPSAppDEDataSet}
   */
  getFilterPSAppDEDataSetMust(): IPSAppDEDataSet;

  /**
   * 节点图标值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getIconPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点图标值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get iconPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点图标值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getIconPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 节点标识值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getIdPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点标识值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get idPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点标识值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getIdPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 叶节点标识值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getLeafFlagPSAppDEField(): IPSAppDEField | null;

  /**
   * 叶节点标识值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get leafFlagPSAppDEField(): IPSAppDEField | null;

  /**
   * 叶节点标识值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getLeafFlagPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 最大加载节点数
   * @type {number}
   */
  maxSize: number;

  /**
   * 应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  get psAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体结果集对象（必须存在）
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSetMust(): IPSAppDEDataSet;

  /**
   * 删除数据应用实体行为
   *
   * @type {IPSAppDEAction}
   */
  getRemovePSAppDEAction(): IPSAppDEAction | null;

  /**
   * 删除数据应用实体行为
   *
   * @type {IPSAppDEAction}
   */
  get removePSAppDEAction(): IPSAppDEAction | null;

  /**
   * 删除数据应用实体行为（必须存在）
   *
   * @type {IPSAppDEAction}
   */
  getRemovePSAppDEActionMust(): IPSAppDEAction;

  /**
   * 删除要求操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getRemovePSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 删除要求操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get removePSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 删除要求操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getRemovePSDEOPPrivMust(): IPSDEOPPriv;

  /**
   * 节点排序方向
   * @description 值模式 [树节点字段排序方向] {ASC：升序、 DESC：降序 }
   * @type {( string | 'ASC' | 'DESC')}
   */
  sortDir: string | 'ASC' | 'DESC';

  /**
   * 节点排序值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getSortPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点排序值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get sortPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点排序值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getSortPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 节点文本格式化
   * @type {string}
   */
  textFormat: string;

  /**
   * 节点文本值属性对象
   *
   * @type {IPSAppDEField}
   */
  getTextPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点文本值属性对象
   *
   * @type {IPSAppDEField}
   */
  get textPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点文本值属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getTextPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 节点提示值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getTipsPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点提示值应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get tipsPSAppDEField(): IPSAppDEField | null;

  /**
   * 节点提示值应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getTipsPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 更新要求操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getUpdatePSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 更新要求操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get updatePSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 更新要求操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getUpdatePSDEOPPrivMust(): IPSDEOPPriv;

  /**
   * 附加节点标题
   * @type {boolean}
   * @default false
   */
  appendCaption: boolean;
}
